home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / mint / utilit~1 / akputil7.zoo / rm.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-16  |  1.4 KB  |  79 lines

  1. #include <minimal.h>
  2. #include <osbind.h>
  3. #include <string.h>
  4.  
  5. #define TRUE 1
  6. #define FALSE 0
  7.  
  8. extern char *syserr(long);
  9.  
  10. int rflag = 0, fflag = 0;
  11.  
  12. int
  13. do_rm(const char *name) {
  14.     char *e;
  15.     long err;
  16.     char attr;
  17.  
  18.     if ((err = attr = Fattrib(name,0,0)) < 0) goto error;
  19.     else if (attr & 1) {
  20.     if (fflag) {
  21.         if ((err = Fattrib(name,1,(attr & ~1))) < 0) goto error;
  22.         /* else fall through to next "if" */
  23.     }
  24.     else {
  25.         e = "access denied";
  26.         goto error1;
  27.     }
  28.     }
  29.     if ((err = Fdelete(name)) < 0) {
  30. error:    e = syserr(err);
  31. error1:    (void)Fwrite(2,(long)strlen(name),name);
  32.     (void)Fwrite(2,2L,": ");
  33.     (void)Fwrite(2,(long)strlen(e),e);
  34.     (void)Fwrite(2,2L,"\r\n");
  35.     return 1;
  36.     }
  37.     return 0;
  38. }
  39.  
  40. int
  41. main(int argc,char *argv[])
  42. {
  43.     char *p;
  44.     int e;
  45.  
  46.     --argc, ++argv;
  47.     while (*argv && **argv == '-') {
  48.         p = &argv[0][1];
  49.         while (*p) {
  50.         switch (*p) {
  51.         case 'f': fflag = 1; break;
  52.         case 'r': (void)Fwrite(2,23L,"rm -r not implemented\r\n");
  53.               exit(1);
  54.         default:
  55.             (void)Fwrite(2,16L,"Unknown option: ");
  56.             (void)Fwrite(2,1L,p);
  57.             (void)Fwrite(2,2L,"\r\n");
  58.             goto usage;
  59.         }
  60.         p++;
  61.     }
  62.     argc--, argv++;
  63.     }
  64.  
  65.     if (!argc) {
  66. usage:
  67.     (void)Fwrite(2,29L,"Usage: rm [-fr] files ...\r\n");
  68.     Pterm(1);
  69.     }
  70.  
  71.     e = 0;
  72.     while (argc) {
  73.     e |= do_rm(*argv);
  74.     argv++, argc--;
  75.     }
  76.     return e;
  77. }
  78.  
  79.